package com.company.aicrawlers.service;

import com.company.aicrawlers.entity.Product;
import com.company.aicrawlers.entity.QuestionProduct;

import java.util.List;

/**
 * 问句-产品关联服务接口
 *
 * @author AI Crawlers Team
 * @date 2025-10-10
 */
public interface QuestionProductService {
    
    /**
     * 获取问句关联的所有产品
     *
     * @param questionId 问句ID
     * @return 产品列表
     */
    List<Product> getProductsByQuestionId(Long questionId);
    
    /**
     * 获取产品关联的所有问句ID
     *
     * @param productId 产品ID
     * @return 问句ID列表
     */
    List<Long> getQuestionIdsByProductId(Long productId);
    
    /**
     * 添加问句-产品关联
     *
     * @param questionId 问句ID
     * @param productId 产品ID
     * @param relationType 关联类型（primary/related/compare）
     * @param sortOrder 排序
     * @return 关联ID
     */
    Long addRelation(Long questionId, Long productId, String relationType, Integer sortOrder);
    
    /**
     * 移除问句-产品关联
     *
     * @param questionId 问句ID
     * @param productId 产品ID
     */
    void removeRelation(Long questionId, Long productId);
    
    /**
     * 批量设置问句的产品关联
     * （先清除旧关联，再添加新关联）
     *
     * @param questionId 问句ID
     * @param relations 关联列表
     */
    void batchSetRelations(Long questionId, List<QuestionProduct> relations);
    
    /**
     * 清除问句的所有产品关联
     *
     * @param questionId 问句ID
     */
    void clearQuestionRelations(Long questionId);
    
    /**
     * 清除产品的所有问句关联
     *
     * @param productId 产品ID
     */
    void clearProductRelations(Long productId);
}

